{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier-BoldOblique;\f2\fmodern\fcharset0 Courier;
\f3\fmodern\fcharset0 Courier-Bold;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid1\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}
{\list\listtemplateid5\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid401\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid5}
{\list\listtemplateid6\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid501\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid6}
{\list\listtemplateid7\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid601\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid7}
{\list\listtemplateid8\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid701\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid8}
{\list\listtemplateid9\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid801\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid9}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}}
\paperw11900\paperh16840\vieww23220\viewh19220\viewkind0
\deftab720
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\f0\b\fs38 \cf0 WDL-OL IPlug Examples Instructions
\fs24 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b0 \cf0 www.olilarkin.co.uk\
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
\ls1\ilvl0\cf0 \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
\ls1\ilvl0
\b\fs28 \cf0 Introduction
\b0\fs24 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 \
This folder contains example/template projects to demonstrate how to use different features of my modified IPlug and WDL. They also serve as a testbed to make sure that the various aspects are working. Each folder contains scripts which automate the build process and package everything along with a pdf manual in an installer. The scripts also code sign binaries/installers and set icons where required.\
\
Projects are provided for Visual Studio 2010 and Xcode 3 or 4. You cannot downgrade the VS2010 projects to work with VS2008 or VS2005. There are also codeblocks projects for building VST2 plugins on windows but these are not maintained and will probably require some edits in order to compile. \
\
To build 64 bit binaries on windows, using VS2010 express, you need to have installed the Windows SDK 7.1, if you have the pro version it should already be installed.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b \cf0 Requirements:
\b0 \
\
Some of these are optional, but without them the build-scripts will need to be edited, otherwise you'll get errors.\
\
Windows\

\b \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
\ls2\ilvl0
\b0 \cf0 {\listtext	\'95	}Msysgit {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/msysgit/"}}{\fldrslt http://code.google.com/p/msysgit/}}
\b \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
\ls3\ilvl0
\b0 \cf0 {\listtext	\'95	}VS2010 Express C++ & Windows SDK 7.1 or VS2010 Professional\
{\listtext	\'95	}Python 2.x {\field{\*\fldinst{HYPERLINK "http://www.python.org/"}}{\fldrslt http://www.python.org/}}\
{\listtext	\'95	}Innosetup {\field{\*\fldinst{HYPERLINK "http://www.jrsoftware.org/isinfo.php"}}{\fldrslt http://www.jrsoftware.org/isinfo.php}}\
{\listtext	\'95	}7zip {\field{\*\fldinst{HYPERLINK "http://www.7-zip.org/"}}{\fldrslt http://www.7-zip.org/}} (if you want to zip instead of make an installer)\
{\listtext	\'95	}Pace ashelper tool and certificate for code signing AAX binaries\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 \
Mac
\b \
\
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
\ls4\ilvl0
\b0 \cf0 {\listtext	\'95	}Git-osx {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/git-osx-installer/"}}{\fldrslt http://code.google.com/p/git-osx-installer/}}
\b \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
\ls5\ilvl0
\b0 \cf0 {\listtext	\'95	}Xcode 3.26 or 4.x installed, including command-line tools\
{\listtext	\'95	}Coreaudio SDK if using xcode 4.3 or higher\
{\listtext	\'95	}Packages for building OSX installers {\field{\*\fldinst{HYPERLINK "http://s.sudre.free.fr/Software/Packages/about.html"}}{\fldrslt http://s.sudre.free.fr/Software/Packages/about.html}}\
{\listtext	\'95	}setfileicon utility {\field{\*\fldinst{HYPERLINK "http://maxao.free.fr/telechargements/setfileicon.gz"}}{\fldrslt http://maxao.free.fr/telechargements/setfileicon.gz}}\
{\listtext	\'95	}Mac Developer ID Certificates for code signing installers for 10.8>\
{\listtext	\'95	}Mac 3rd Party App Dev Certificates for code signing binaries and installers for the Mac App Store\
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
\ls6\ilvl0\cf0 {\listtext	\'95	}Pace ashelper tool and certificate for code signing AAX binaries\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
\ls7\ilvl0
\b\fs28 \cf0 About the examples:\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\pardirnatural

\fs24 \cf0 \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
\ls8\ilvl0
\b0 \cf0 {\listtext	\'95	}IPlugChunks - shows how to use chunks in a plugin. Chunks allow you to store arbitrary data in the plugin's state as apposed to a single-precision value for each parameter.\
{\listtext	\'95	}IPlugControls -  demos the various IControl classes (example by Captain Caveman)\
{\listtext	\'95	}IPlugConvoEngine - demos WDL_ConvolutionEngine() - Cockos' fast convolution engine (example by Tale)\
{\listtext	\'95	}IPlugDistortion - demos Tale's bessel filter implementation for realtime oversampling (example by Tale)\
{\listtext	\'95	}IPlugDrumSynth - multi-output buses (TODO) \
{\listtext	\'95	}IPlugEEL - demonstrates using Cockos' EEL library for run-time expression evaluation \
{\listtext	\'95	}IPlugEffect - The most basic IPlug plugin, a gain control similar to AGain in the VST2 SDK, however it has a GUI\
{\listtext	\'95	}IPlugGUIResize - has three buttons to choose different gui sizes at runtime\
{\listtext	\'95	}IPlugHostDetect - displays the host name and version (not very reliable at the moment)\
{\listtext	\'95	}IPlugMonoSynth - a basic monophonic IPlug synth, showing how to handle MIDI messages sample accurately. Also shows how to use Tale's IKeyboardControl.\
{\listtext	\'95	}IPlugMouseTest - demonstrates an XY pad IControl which is linked to two plugin parameters\
{\listtext	\'95	}IPlugMultiChannel  - demos a multi-channel IPlug plugin, and how to test if channels are connected\
{\listtext	\'95	}IPlugMultiTargets - a midi effect plugin that also demos compilation to IOS, getting tempo info, and pop up menus\
{\listtext	\'95	}IPlugOpenGL - using OpenGL in IPlug\
{\listtext	\'95	}IPlugPlush -  shows how to use Cockos' Plush to do basic 3D Graphics\
{\listtext	\'95	}IPlugPolySynth - a basic polyphonic IPlug synth\
{\listtext	\'95	}IPlugResampler - demonstrates using WDL_Resampler\
{\listtext	\'95	}IPlugSideChain - a plugin that shows how to setup a sidechain input, for VST3, AU and RTAS\
{\listtext	\'95	}IPlugText - demos different ways to draw text\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 \
The IPlugEffect project is the main starting project I use. If you are not interested in AAX, RTAS etc, I suggest you duplicate this and manually remove those targets to give you a new clean starting template with just your preferred formats in it.\
\
Rather than changing settings for individual targets/projects inside the Xcode Project/Visual Studio solutions, most customisations can be done in the xcconfig and property sheets.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b \cf0 Xcode4
\b0 \
\
If you wish to use Xcode4, you will need to change the COMPILER and BASE_SDK build settings in 
\b common.xcconfig
\b0 . Don't let Xcode4 "validate project settings", which can cause problems.\
\
    
\i COMPILER = com.apple.compilers.llvmgcc42 //or com.apple.compilers.llvm.clang.1_0\
    BASE_SDK = macosx10.6
\i0 \
\
If you want to compile RTAS or AAX, it is also necessary to update the PluginLibrary and AAXLibrary Xcode projects to use the llvmgcc42 compiler and 10.6 sdk. RTAS probably won't compile against the 10.6 SDK or with Xcode4.\
\
Apple have changed the default location of the CoreAudio SDK on Xcode4.x. You should probably download "audio_tools_for_xcode_developer_preview_os_x_mountain_lion.dmg" created 8/06/12 and install the CoreAudio SDK to /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Extras/CoreAudio . Set CA_SDK in common.xcconfig to match\
 \
I personally use Xcode3.26 and have not tested WDL-OL much in Xcode4.x.\
\
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
\ls9\ilvl0
\b\fs28 \cf0 About the supported formats:
\b0\fs24 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b \cf0 VST2
\b0 \
\
You need to two files from the Steinberg VST2.4 SDK to the folder VST_SDK, see VST_SDK/readme.txt\
\
- On OSX by default I build to the system VST2 folder
\b  /Library/Audio/Plug-Ins/VST/
\b0  - You will need to have write permissions to this folder. If you want to build to the user VST2 folder, you'll need to edit the 
\b common.xcconfig
\b0  file and also modify the installer scripts\
\

\b VST3\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b0 \cf0 \
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 Extract the Steinberg VST3.5.2 SDK to the folder 
\b VST3_SDK
\b0  but get ready to revert two of the files using git... \
\
- WDL-OL has slightly customised xcode and VS2010 projects for the VST3 base library. Make sure you didn't overwrite them when you extracted the VST3 SDK or if you did just revert the changes in git.\
\
    
\i VST3_SDK\\base\\mac\\base.xcodeproj/*
\i0 \
	 
\i VST3_SDK\\base\\win\\base_vc10.vcxproj\

\i0 \
- On windows, make sure you have a folder 
\b C:\\Program Files\\Common Files\\VST3
\i\b0 , 
\i0 otherwise the copy files build stage will cause the build to fail\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 - On OSX by default I build to the system VST3 folder 
\b /Library/Audio/Plug-Ins/VST3/
\b0  - You will need to have write permissions to this folder. If you want to build to the user VST3 folder, you'll need to edit the 
\b common.xcconfig
\b0  file and also modify the installer scripts\
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
\cf0 \

\b RTAS
\b0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
\cf0 \
- Sign up to be a registered avid plugin developer. Once you have access to it, Extract 
\b PT_90_PlugInSDK.zip
\b0  into the 
\b PT9_SDK
\b0  folder. Run 
\b config_SDK_for_Mac.command 
\b0 to develop on mac. \
\
- On windows, the debug builds of the RTAS plugin link against the release versions of the Digidesign PluginLib and define 
\b NDEBUG
\b0 . Without this the binaries won't be accepted by ProTools. The Digidesign examples have the same problem.\
\
- Don't be tempted to change any optimisation settings in the AVID/Digidesign 
\b PlugInLib.vcproj
\b0  . If you enable optimisation, the plugin will crash - this is how it is in the release builds of the PTSDK examples too.\
\
- On windows, make sure you have a folder 
\b C:\\Program Files\\Digidesign\\ProTools_3PDev\\dae\\Plug-Ins
\b0 , otherwise the copy files build stage will cause the build to fail. On a 64bit operating system, that should be 
\b C:\\Program Files (x86)\\Digidesign\\ProTools_3PDev\\dae\\Plug-Ins\
\

\b0 - On OSX you will probably need to update the AVID/Digidesign xcconfig files and modify the 
\b SDKROOT 
\b0 variable to macosx10.5, since it is set to 10.4u by default\
\
- On OSX, any C source code that you include (i.e. file extension is .c) can cause errors due to the RTAS precompiled header file getting compiled as C rather than C++. You can avoid this problem by renaming you .c file to .cpp or including it in a static library, or making a mycsourcecode.cpp file that has #include "mycsourcecode.c"\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b \cf0 AAX\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b0 \cf0 - Extract 
\b AAX_SDK_1p0p6.zip
\b0  to the 
\b AAX_SDK
\b0  folder\
\
- If you want to compile against the 10.5 SDK on OSX (see 
\b common.xcconfig
\b0 ) , you must change the 
\b SDKROOT
\b0  setting in 
\b AAX_Library.xcodeproj
\b0  to macosx10.5\
 \
- Also modify 
\b ExamplePlugIns/Common/Mac/CommonDebugSettings.xcconfig
\b0  and 
\b ExamplePlugIns/Common/Mac/CommonReleaseSettings.xcconfig
\b0 ...\
\
GCC_VERSION = com.apple.compilers.gcc.4_2\
SDKROOT = macosx10.5\
MACOSX_DEPLOYMENT_TARGET = 10.5\
ARCHS = x86_64 i386\
\
- comment out/fix error AAX_CInstrumentParameters.cpp:75: error: 'index' cannot appear in a constant-expression\
\
- In order to compile AAX binaries that run in the release build of ProTools, you will need to code-sign those binaries (see Avid docs)\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b \cf0 Audio Unit
\b0 \
\
- When building AUs, bear in mind that some hosts keep a cache... see debugging notes below.\
- there is a special shell script 
\b validate_audiounit.command
\b0  that will run the 
\b auvaltool
\b0  command line app with the correct IDs for your plugin (see below) and can also set up the leaks test, which is useful for debugging. Type 
\b man auval 
\b0  or see {\field{\*\fldinst{HYPERLINK "http://developer.apple.com/library/mac/#technotes/tn2204/_index.html"}}{\fldrslt here }}for info.\
- By default I build to the system audiounits folder 
\b /Library/Audio/Plug-Ins/Components/
\b0  - You will need to have write permissions to this folder. If you want to build to the user audiounits folder, you'll need to edit the .xcconfig file and also modify the installer scripts\
\

\b Standalone
\b0 \
\
- Audio and Midi is provided via RTAudio and RTMidi by Gary Scavone. To build on windows you need to extract some files into 
\b ASIO_SDK
\b0 , see 
\b ASIO_SDK/readme.txt
\b0 \
\

\b IOS
\b0 \
\
- Make sure you have Xcode 3.2.6 and iOS SDK 4.3 or Xcode 4.x and iOS SDK 4.3, from apple. In order to actually put an app on a device, you need to sign up and pay for an IOS developer membership.\
- NOTE: IPlug on IOS doesn't use IGraphics or IControl etc\'85 you have to implement a new GUI using apple's UIKit, an example is provided which illustrates how to communicate with the normal IPlug code. If you're project is for multiple targets, you need to 
\b #ifndef OS_ IOS
\b0  around any code that uses IPlug's graphics facilities.\
- Please note that IOS support is not heavily tested\
\

\b Windows Issues\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b0 \cf0 The template projects use static linking with the MSVC2010 runtime libraries (/MT). If you change that you may need to provide the MSVC distributables in your installer, google for "Microsoft Visual C++ 2010 Redistributable Package"\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b \cf0 OSX Issues
\b0 \
\
For OSX 10.8 GateKeeper you will need to code-sign your installer and the .app with a valid signature obtained from Apple (maybe eventually also the plugin binaries). For the app store you need to add entitlements in order to comply with the sandbox regulations. These things are done by the makedist-* build scripts.\
\
If compiling against the 10.7 or 10.8 SDKs you will not be able to make carbon guis.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b\fs28 \cf0 Duplicating Projects\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\fs24 \cf0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b0 \cf0 The IPlugExamples folder contains a python script to duplicate an IPlug project. This allows you to very quickly create a new project based on one of the examples. It does a multiple file find and replace to substitute the new name of the project for the old name, and also to change the manufacturer name. Once you have done this you only need to change two more things by hand in resource.h to make your plugin unique.\
\
You can duplicate a project as follows with the following commands in the OSX terminal or on the windows command prompt. In this example i will copy the IPlugEffect project to a new project called MyNewPlugin\'85\
\
- open terminal or cmd.exe and navigate to the IPlugExamples folder\
- type \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\f1\i\b \cf0 	duplicate.py [inputprojectname] [outputprojectname] [manufacturername]\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\f0\i0\b0 \cf0 \
e.g\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\f2 \cf0 	
\f1\i\b duplicate.py IPlugEffect MyNewPlugin OliLarkin\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\f0\i0\b0 \cf0 \
you might need to do 
\f1\i\b ./duplicate.py
\f0\i0\b0  on OSX\
\
- open  
\f3\b MyNewPlugin/resource.h
\f0\b0  and change 
\f3\b PLUG_UNIQUE_ID
\f0\b0  and 
\f3\b PLUG_MFR_ID
\f0\b0 \
\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\b\fs28 \cf0 Debugging Setups\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720

\fs26 \cf0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720

\b0\fs24 \cf0 To debug plugins in different hosts, I have added common OSX hosts to the "Executables" section in Xcode3. This information is store in a 
\b .pbxuser
\b0  file, which is tied to your OSX username. There is a shell script 
\b setup_debugging.command
\b0  which will rename all the 
\b oli.pbxuser
\b0  files to 
\b yourosxusername.pbxuser
\b0 .\
\
To debug an au using auval, remember to change the auval executable arguments to match plugin's type and IDs: 
\b aufx/aumf/aumu PLUG_UNIQUE_ID PLUG_MFR_ID
\b0 \
\
AU hosts cache information about the plugin I/O channels etc, so I have added a build script that deletes the caches after a build.\
\
There is also a 
\b validate_audiounit.command
\b0  shell script which will is a helper that runs auval with your plugins' unique IDs, and optionally performs the leaks test.\
\
The windows debug setups use {\field{\*\fldinst{HYPERLINK "http://www.hermannseib.com/english/savihost.htm"}}{\fldrslt SAVIHost}} for VST2 debugging, and VST3PluginTestHost for VST3 debugging (in Steinberg VST3.5 SDK)\
\
You should install VSTHost to 
\b C:\\Program Files\\VSTHost\\vsthost.exe
\b0  (on x64 you should install the 64bit version here)\
\
To debug RTAS you need to install the PT Dev build. By default my debugging setup expects it to be installed in 
\b /Applications/Avid/ProTools_3PDev
\b0  on mac and 
\b %ProgramFiles%\\ Avid\\ProTools_3PDev
\b0  on windows\
\
\

\b\fs28 Installers & one-click build scripts\

\fs24 \

\b0 The example projects contain shell scripts for both Windows (
\b makedist-win.bat
\b0 ) and OSX (
\b makedist-mac.command
\b0 ) that build everything, code-sign (where relevant) and package the products in an installer including license, readme.txt, changelog.txt and manual. On Windows the installer program "Innosetup" is used, on OSX "Packages". A python script 
\b update_version.py
\b0  is called to look at 
\b resource.h
\b0  and get the version from the 
\b PLUG_VER #define
\b0 . It then updates the 
\b info.plist
\b0  files and installer scripts with the version number (in the format major.minor.bugfix). If you aren't building some components, e.g. RTAS, the build scripts may need to be modified. Please alter the license and readme text and remove my name from them if you release a plugin publicly. On OSX the script can also code-sign the standalone app and builds a .pkg for the appstore (commented out).
\b \

\b0 \
\
}